package sk.scerbak.ucl.datamodel.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import sk.scerbak.ucl.datamodel.services.DatamodelGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDatamodelParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_UPID", "RULE_EMPTY", "RULE_CHAR", "RULE_UPCHAR", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "':'", "'-'", "','", "'('", "')'", "'/'", "'import'", "'.'", "'.*'"
    };
    public static final int RULE_ID=4;
    public static final int RULE_UPCHAR=8;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=14;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=12;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=11;
    public static final int T__19=19;
    public static final int RULE_EMPTY=6;
    public static final int RULE_STRING=10;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int RULE_UPID=5;
    public static final int RULE_INT=9;
    public static final int RULE_CHAR=7;
    public static final int RULE_WS=13;

    // delegates
    // delegators


        public InternalDatamodelParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalDatamodelParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalDatamodelParser.tokenNames; }
    public String getGrammarFileName() { return "../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g"; }



     	private DatamodelGrammarAccess grammarAccess;
     	
        public InternalDatamodelParser(TokenStream input, DatamodelGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected DatamodelGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:76:1: ruleModel returns [EObject current=null] : ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0_0 = null;

        EObject lv_package_1_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:79:28: ( ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:80:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:80:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:80:2: ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:80:2: ( (lv_imports_0_0= ruleImport ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==22) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:81:1: (lv_imports_0_0= ruleImport )
            	    {
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:81:1: (lv_imports_0_0= ruleImport )
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:82:3: lv_imports_0_0= ruleImport
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getImportsImportParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleModel131);
            	    lv_imports_0_0=ruleImport();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"imports",
            	            		lv_imports_0_0, 
            	            		"Import");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:98:3: ( (lv_package_1_0= rulePackage ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:99:1: (lv_package_1_0= rulePackage )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:99:1: (lv_package_1_0= rulePackage )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:100:3: lv_package_1_0= rulePackage
            {
             
            	        newCompositeNode(grammarAccess.getModelAccess().getPackagePackageParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_rulePackage_in_ruleModel153);
            lv_package_1_0=rulePackage();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getModelRule());
            	        }
                   		set(
                   			current, 
                   			"package",
                    		lv_package_1_0, 
                    		"Package");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRulePackage"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:124:1: entryRulePackage returns [EObject current=null] : iv_rulePackage= rulePackage EOF ;
    public final EObject entryRulePackage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackage = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:125:2: (iv_rulePackage= rulePackage EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:126:2: iv_rulePackage= rulePackage EOF
            {
             newCompositeNode(grammarAccess.getPackageRule()); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage189);
            iv_rulePackage=rulePackage();

            state._fsp--;

             current =iv_rulePackage; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackage"


    // $ANTLR start "rulePackage"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:133:1: rulePackage returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_data_3_0= ruleData ) )+ ) ;
    public final EObject rulePackage() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_data_3_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:136:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_data_3_0= ruleData ) )+ ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:137:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_data_3_0= ruleData ) )+ )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:137:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_data_3_0= ruleData ) )+ )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:137:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= ':' ( (lv_data_3_0= ruleData ) )+
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_rulePackage236); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageAccess().getPackageKeyword_0());
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:141:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:142:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:142:1: (lv_name_1_0= ruleQualifiedName )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:143:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getPackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackage257);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,16,FOLLOW_16_in_rulePackage269); 

                	newLeafNode(otherlv_2, grammarAccess.getPackageAccess().getColonKeyword_2());
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:163:1: ( (lv_data_3_0= ruleData ) )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==RULE_UPID) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:164:1: (lv_data_3_0= ruleData )
            	    {
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:164:1: (lv_data_3_0= ruleData )
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:165:3: lv_data_3_0= ruleData
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPackageAccess().getDataDataParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleData_in_rulePackage290);
            	    lv_data_3_0=ruleData();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPackageRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"data",
            	            		lv_data_3_0, 
            	            		"Data");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackage"


    // $ANTLR start "entryRuleData"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:189:1: entryRuleData returns [EObject current=null] : iv_ruleData= ruleData EOF ;
    public final EObject entryRuleData() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleData = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:190:2: (iv_ruleData= ruleData EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:191:2: iv_ruleData= ruleData EOF
            {
             newCompositeNode(grammarAccess.getDataRule()); 
            pushFollow(FOLLOW_ruleData_in_entryRuleData327);
            iv_ruleData=ruleData();

            state._fsp--;

             current =iv_ruleData; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleData337); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleData"


    // $ANTLR start "ruleData"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:198:1: ruleData returns [EObject current=null] : ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) )? ) ;
    public final EObject ruleData() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        AntlrDatatypeRuleToken lv_description_2_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:201:28: ( ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) )? ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:202:1: ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) )? )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:202:1: ( ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) )? )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:202:2: ( (lv_name_0_0= ruleNAME ) ) (otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) )?
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:202:2: ( (lv_name_0_0= ruleNAME ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:203:1: (lv_name_0_0= ruleNAME )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:203:1: (lv_name_0_0= ruleNAME )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:204:3: lv_name_0_0= ruleNAME
            {
             
            	        newCompositeNode(grammarAccess.getDataAccess().getNameNAMEParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleData383);
            lv_name_0_0=ruleNAME();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getDataRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"NAME");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:220:2: (otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==17) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:220:4: otherlv_1= '-' ( (lv_description_2_0= rulePlainText ) )
                    {
                    otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleData396); 

                        	newLeafNode(otherlv_1, grammarAccess.getDataAccess().getHyphenMinusKeyword_1_0());
                        
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:224:1: ( (lv_description_2_0= rulePlainText ) )
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:225:1: (lv_description_2_0= rulePlainText )
                    {
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:225:1: (lv_description_2_0= rulePlainText )
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:226:3: lv_description_2_0= rulePlainText
                    {
                     
                    	        newCompositeNode(grammarAccess.getDataAccess().getDescriptionPlainTextParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_rulePlainText_in_ruleData417);
                    lv_description_2_0=rulePlainText();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDataRule());
                    	        }
                           		set(
                           			current, 
                           			"description",
                            		lv_description_2_0, 
                            		"PlainText");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleData"


    // $ANTLR start "entryRulePlainText"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:252:1: entryRulePlainText returns [String current=null] : iv_rulePlainText= rulePlainText EOF ;
    public final String entryRulePlainText() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePlainText = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:253:2: (iv_rulePlainText= rulePlainText EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:254:2: iv_rulePlainText= rulePlainText EOF
            {
             newCompositeNode(grammarAccess.getPlainTextRule()); 
            pushFollow(FOLLOW_rulePlainText_in_entryRulePlainText458);
            iv_rulePlainText=rulePlainText();

            state._fsp--;

             current =iv_rulePlainText.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlainText469); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlainText"


    // $ANTLR start "rulePlainText"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:261:1: rulePlainText returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) ;
    public final AntlrDatatypeRuleToken rulePlainText() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token this_ID_1=null;
        Token kw=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:264:28: ( (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:265:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:265:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:265:6: this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText509); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_0()); 
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:272:1: (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            loop4:
            do {
                int alt4=6;
                switch ( input.LA(1) ) {
                case RULE_ID:
                    {
                    alt4=1;
                    }
                    break;
                case 18:
                    {
                    alt4=2;
                    }
                    break;
                case 19:
                    {
                    alt4=3;
                    }
                    break;
                case 20:
                    {
                    alt4=4;
                    }
                    break;
                case 21:
                    {
                    alt4=5;
                    }
                    break;

                }

                switch (alt4) {
            	case 1 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:272:6: this_ID_1= RULE_ID
            	    {
            	    this_ID_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText530); 

            	    		current.merge(this_ID_1);
            	        
            	     
            	        newLeafNode(this_ID_1, grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_1_0()); 
            	        

            	    }
            	    break;
            	case 2 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:281:2: kw= ','
            	    {
            	    kw=(Token)match(input,18,FOLLOW_18_in_rulePlainText554); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getCommaKeyword_1_1()); 
            	        

            	    }
            	    break;
            	case 3 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:288:2: kw= '('
            	    {
            	    kw=(Token)match(input,19,FOLLOW_19_in_rulePlainText573); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getLeftParenthesisKeyword_1_2()); 
            	        

            	    }
            	    break;
            	case 4 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:295:2: kw= ')'
            	    {
            	    kw=(Token)match(input,20,FOLLOW_20_in_rulePlainText592); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getRightParenthesisKeyword_1_3()); 
            	        

            	    }
            	    break;
            	case 5 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:302:2: kw= '/'
            	    {
            	    kw=(Token)match(input,21,FOLLOW_21_in_rulePlainText611); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getPlainTextAccess().getSolidusKeyword_1_4()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlainText"


    // $ANTLR start "entryRuleNAME"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:315:1: entryRuleNAME returns [String current=null] : iv_ruleNAME= ruleNAME EOF ;
    public final String entryRuleNAME() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNAME = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:316:2: (iv_ruleNAME= ruleNAME EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:317:2: iv_ruleNAME= ruleNAME EOF
            {
             newCompositeNode(grammarAccess.getNAMERule()); 
            pushFollow(FOLLOW_ruleNAME_in_entryRuleNAME654);
            iv_ruleNAME=ruleNAME();

            state._fsp--;

             current =iv_ruleNAME.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNAME665); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNAME"


    // $ANTLR start "ruleNAME"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:324:1: ruleNAME returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) ;
    public final AntlrDatatypeRuleToken ruleNAME() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_UPID_0=null;
        AntlrDatatypeRuleToken this_PlainText_1 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:327:28: ( (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:328:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:328:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:328:6: this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )?
            {
            this_UPID_0=(Token)match(input,RULE_UPID,FOLLOW_RULE_UPID_in_ruleNAME705); 

            		current.merge(this_UPID_0);
                
             
                newLeafNode(this_UPID_0, grammarAccess.getNAMEAccess().getUPIDTerminalRuleCall_0()); 
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:335:1: (this_PlainText_1= rulePlainText )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==RULE_ID) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:336:5: this_PlainText_1= rulePlainText
                    {
                     
                            newCompositeNode(grammarAccess.getNAMEAccess().getPlainTextParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_rulePlainText_in_ruleNAME733);
                    this_PlainText_1=rulePlainText();

                    state._fsp--;


                    		current.merge(this_PlainText_1);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNAME"


    // $ANTLR start "entryRuleImport"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:354:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:355:2: (iv_ruleImport= ruleImport EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:356:2: iv_ruleImport= ruleImport EOF
            {
             newCompositeNode(grammarAccess.getImportRule()); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport780);
            iv_ruleImport=ruleImport();

            state._fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport790); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImport"


    // $ANTLR start "ruleImport"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:363:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:366:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:367:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:367:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:367:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            {
            otherlv_0=(Token)match(input,22,FOLLOW_22_in_ruleImport827); 

                	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:371:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:372:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:372:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:373:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard
            {
             
            	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport848);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildcard();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getImportRule());
            	        }
                   		set(
                   			current, 
                   			"importedNamespace",
                    		lv_importedNamespace_1_0, 
                    		"QualifiedNameWithWildcard");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImport"


    // $ANTLR start "entryRuleQualifiedName"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:397:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:398:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:399:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName885);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName896); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:406:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:409:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:410:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:410:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:410:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName936); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:417:1: (kw= '.' this_ID_2= RULE_ID )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==23) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:418:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,23,FOLLOW_23_in_ruleQualifiedName955); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName970); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:438:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;


        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:439:2: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:440:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard1018);
            iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();

            state._fsp--;

             current =iv_ruleQualifiedNameWithWildcard.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard1029); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildcard"


    // $ANTLR start "ruleQualifiedNameWithWildcard"
    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:447:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:450:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:451:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:451:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:452:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard1076);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    afterParserOrEnumRuleCall();
                
            // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:462:1: (kw= '.*' )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==24) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../sk.scerbak.ucl.datamodel/src-gen/sk/scerbak/ucl/datamodel/parser/antlr/internal/InternalDatamodel.g:463:2: kw= '.*'
                    {
                    kw=(Token)match(input,24,FOLLOW_24_in_ruleQualifiedNameWithWildcard1095); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopAsteriskKeyword_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildcard"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleModel131 = new BitSet(new long[]{0x0000000000408000L});
    public static final BitSet FOLLOW_rulePackage_in_ruleModel153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rulePackage236 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackage257 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_rulePackage269 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleData_in_rulePackage290 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleData_in_entryRuleData327 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleData337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleData383 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleData396 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleData417 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_entryRulePlainText458 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlainText469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText509 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText530 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_18_in_rulePlainText554 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_19_in_rulePlainText573 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_20_in_rulePlainText592 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_21_in_rulePlainText611 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_ruleNAME_in_entryRuleNAME654 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNAME665 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_UPID_in_ruleNAME705 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleNAME733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport780 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport790 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleImport827 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName885 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName896 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName936 = new BitSet(new long[]{0x0000000000800002L});
    public static final BitSet FOLLOW_23_in_ruleQualifiedName955 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName970 = new BitSet(new long[]{0x0000000000800002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard1018 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard1029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard1076 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_ruleQualifiedNameWithWildcard1095 = new BitSet(new long[]{0x0000000000000002L});

}